home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.mactech.com 2010
/
ftp.mactech.com.tar
/
ftp.mactech.com
/
machack
/
Hacks96
/
FlyPaper.sit
/
Fly Paper
/
FlyPaper Source
/
App Sources
/
FlyPaperUtils.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1996-06-22
|
3KB
|
133 lines
#include "ST_MacClasses.h"
#ifndef FLYPAPERUTILS_H
#include "FlyPaperUtils.h"
#endif
#ifndef FLYPAPERAPP_H
#include "FlyPaperApp.h"
#endif
#include <folders.h>
Handle TempGet1Resource (ResType type, short id)
{
Handle resHandle;
SetResLoad (false);
resHandle = Get1Resource (type, id);
SetResLoad (true);
if (!resHandle)
return nil;
ST_ResourceHandle resHandleKiller (resHandle);
long size = SizeResource (resHandle);
if (size < 0)
return nil;
OSErr error;
Handle tempHandle = TempNewHandle (size, &error);
if (!tempHandle)
return nil;
ST_Handle tempHandleKiller (tempHandle);
HLock (tempHandle);
ReadPartialResource (resHandle, 0, *tempHandle, size);
HUnlock (tempHandle);
if (ResError () == noErr) {
tempHandleKiller.Forget ();
return tempHandle;
} else
return nil;
}
Boolean OptionKeyDown (void)
{
KeyMap map;
GetKeys (map);
return (map [1] & 0x00000004) ? true : false;
}
OSErr FlyPaperFindFolder (short vRefNum, OSType folderType, Boolean createFolder,
short *foundVRefNum, long *foundDirID)
{
OSErr error;
switch (folderType) {
case (kFlyPaperAppFolder) : {
FCBPBRec fcbPB;
fcbPB.ioNamePtr = nil;
fcbPB.ioVRefNum = 0;
fcbPB.ioRefNum = gResFile;
fcbPB.ioFCBIndx = 0;
error = PBGetFCBInfoSync (&fcbPB);
*foundDirID = fcbPB.ioFCBParID;
*foundVRefNum = fcbPB.ioFCBVRefNum;
break;
}
case (kClippingsFolder) : {
CInfoPBRec pb;
error = FlyPaperFindFolder (vRefNum, kSystemFolderType, false, foundVRefNum, foundDirID);
if (!error) {
pb.hFileInfo.ioNamePtr = gClippingsFolderName;
pb.hFileInfo.ioVRefNum = *foundVRefNum;
pb.hFileInfo.ioDirID = *foundDirID;
pb.hFileInfo.ioFDirIndex = 0;
error = PBGetCatInfoSync (&pb);
*foundDirID = pb.hFileInfo.ioDirID;
if (error == fnfErr && createFolder)
error = DirCreate (*foundVRefNum, *foundDirID, gClippingsFolderName, foundDirID);
}
break;
}
default:
// To allow passing of 0 as system disk.
if (vRefNum == 0)
vRefNum = kOnSystemDisk;
error = FindFolder (vRefNum, folderType, createFolder, foundVRefNum, foundDirID);
}
return (error);
}
void ClassifyPoint (Point p, Boolean* onLeft, short* offset)
{
Rect bigRect = (**GetGrayRgn ()).rgnBBox;
if (bigRect.right - p.h > p.h - bigRect.left)
*onLeft = true;
else
*onLeft = false;
// cycle through devices and find offset from top of device to p.v
GDHandle dev = GetDeviceList ();
while (dev) {
Rect r = (**dev).gdRect;
if (PtInRect (p, &r)) {
*offset = p.v - r.top;
return;
}
dev = GetNextDevice (dev);
}
*offset = 0;
}